ESP8266

您所在的位置:网站首页 esp8266 server模式 ESP8266

ESP8266

#ESP8266| 来源: 网络整理| 查看: 265

ESP8266WebServer库

用于HTTP协议通讯。可使用ESP8266开发板建立网络服务器,以达到其他设备(物联网设备和网络设备)通过HTTP协议进行通讯

ESP866-web-Server-Library

应用一

代码(建立基础网络服务器)

#include // 使用 ESP8266WiFi库 #include // ESP8266WiFiMulti库 #include // ESP8266WebServer库 ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti' ESP8266WebServer esp8266_server(80);// 建立ESP8266WebServer对象,对象名称为esp8266_server // 括号中的数字是网路服务器响应http请求的端口号 // 网络服务器标准http端口号为80,因此这里使用80为端口号 void setup(void){ Serial.begin(9600); // 启动串口通讯 //通过addAp函数存储 WiFi名称 WiFi密码 // 这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息。 wifiMulti.addAP("WIFI1名称", "WIFI1密码"); wifiMulti.addAP("WIFI2名称", "WIFI2密码"); wifiMulti.addAP("WIFI3名称", "WIFI3密码"); int i = 0; // 环境中搜索addAP函数所存储的WiFi。如果搜到多个存储的WiFi那么NodeMCU 将会连接信号最强的那一个WiFi信号。 // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED” while (wifiMulti.run() != WL_CONNECTED) { delay(1000); Serial.print(i++); Serial.print(' '); } // WiFi连接成功后将通过串口监视器输出连接成功信息 Serial.println('\n'); // WiFi连接成功后 Serial.print("Connected to "); // NodeMCU将通过串口监视器输出。 Serial.println(WiFi.SSID()); // 连接的WiFI名称 Serial.print("IP address:\t"); // 以及 Serial.println(WiFi.localIP()); // NodeMCU的IP地址 //--------"启动网络服务功能"程序部分开始-------- esp8266_server.begin(); esp8266_server.on("/", handleRoot);//访问网站的根目录 执行handleRoot函数 esp8266_server.onNotFound(handleNotFound); //当请求服务器找不到时,执行handleNotFound函数 //--------"启动网络服务功能"程序部分结束-------- Serial.println("HTTP esp8266_server started");// 告知用户ESP8266网络服务功能已经启动 } /* 以下函数语句为本示例程序重点3*/ void loop(void){ esp8266_server.handleClient(); // 处理http服务器访问 } void handleRoot() { //处理网站根目录“/”的访问请求 esp8266_server.send(200, "text/plain", "Hello from ESP8266"); //访问成功返回200状态码,返回信息类型text/plain(表示纯文本信息),内容为Hello from... } // 设置处理404情况的函数'handleNotFound' void handleNotFound(){ // 当浏览器请求的网络资源无法在服务器找到时,返回404状态码,和提升信息类型和内容 esp8266_server.send(404, "text/plain", "404: Not found"); }

编译后写入板子

上传后,打开串口面板,此时按一下板子的RST复位键,即可在串口栏看到输出的信息。

2

显示已经连接到到MERCURY WIFI,且IP地址为192.168.0.104,此时打开浏览器输入该IP地址即可访问

1

当访问其他路径时,会提示404页面

image-20200722100527005

应用二

网络实现控制开发板LED

#include // ESP8266WiFi库 #include // ESP8266WiFiMulti库 #include // ESP8266WebServer库 ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象,对象名称是'wifiMulti' ESP8266WebServer esp8266_server(80);// 建立ESP8266WebServer对象,对象名称为esp8266_server // 括号中的数字是网路服务器响应http请求的端口号 // 网络服务器标准http端口号为80,因此这里使用80为端口号 void setup(void){ Serial.begin(9600); // 启动串口通讯 pinMode(LED_BUILTIN, OUTPUT); //设置内置LED引脚为输出模式以便控制LED //通过addAp函数存储 WiFi名称 WiFi密码 wifiMulti.addAP("WIFI1名称", "WIFI1密码"); // 这三条语句通过调用函数addAP来记录3个不同的WiFi网络信息。 wifiMulti.addAP("WIFI2名称", "WIFI2密码"); wifiMulti.addAP("WIFI3名称", "WIFI3密码"); int i = 0; while (wifiMulti.run() != WL_CONNECTED) { // 此处的wifiMulti.run()是重点。通过wifiMulti.run(),NodeMCU将会在当前 delay(1000); // 环境中搜索addAP函数所存储的WiFi。如果搜到多个存储的WiFi那么NodeMCU Serial.print(i++); Serial.print(' '); // 将会连接信号最强的那一个WiFi信号。 } // 一旦连接WiFI成功,wifiMulti.run()将会返回“WL_CONNECTED”。这也是 // 此处while循环判断是否跳出循环的条件。 // WiFi连接成功后将通过串口监视器输出连接成功信息 Serial.println('\n'); // WiFi连接成功后 Serial.print("Connected to "); // NodeMCU将通过串口监视器输出。 Serial.println(WiFi.SSID()); // 连接的WiFI名称 Serial.print("IP address:\t"); // 以及 Serial.println(WiFi.localIP()); // NodeMCU的IP地址 //--------"启动网络服务功能"程序部分开始-------- esp8266_server.begin(); esp8266_server.on("/",HTTP_GET,handleRoot);//访问网站的根目录 处理GET请求 执行handleRoot函数 esp8266_server.on("/LED",HTTP_POST,handleLED); //设置处理LED控制请求函数 处理POST请求 esp8266_server.onNotFound(handleNotFound); //当请求服务器找不到时,执行handleNotFound函数 //--------"启动网络服务功能"程序部分结束-------- Serial.println("HTTP esp8266_server started");// 告知用户ESP8266网络服务功能已经启动 } void loop(void){ esp8266_server.handleClient(); // 处理http服务器访问 } void handleRoot() { //处理网站根目录“/”的访问请求 esp8266_server.send(200, "text/html", ""); // NodeMCU将调用此函数。访问成功返回200状态码,返回信息类型text/html } // 设置处理404情况的函数'handleNotFound' void handleNotFound(){ // 当浏览器请求的网络资源无法在服务器找到时,返回404状态码,和提升信息类型和内容 esp8266_server.send(404, "text/plain", "404: Not found"); // NodeMCU将调用此函数。 } void handleLED(){ digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));// 改变LED的点亮或者熄灭状态 esp8266_server.sendHeader("Location","/"); // 跳转回页面根目录 esp8266_server.send(303); // 发送Http相应代码303 跳转 }

结果

img

点击按钮即可点亮或者关闭LED灯



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3